Flash memory is attractive in a mass-storage environment, since flash memory systems do not have the mechanical delays associated with hard drives. Thus, the flash memory system allows higher performance and commensurately lower cost, power, heating and space usage. Nevertheless, flash memory has not traditionally been used in such environments due to certain technical constraints. The first technical problem is write speed, which may be as slow as one-tenth that of a sequential access on a mechanical hard drive. The slower write speed is due to the fact that data cannot be overwritten on a NAND flash device without a long erase cycle prior to the write. Because the erase cycle directly affects the write performance, most flash designs move the write data to a new location and delay the erase until later. In a busy system, delayed erase cycles can build up until the processor runs out of free flash pages and has to stop to create new ones, which significantly affects system performance. The second technical problem is the specified limit for each flash memory page of 100,000 erase cycles for Single Level Cell (“SLC”) devices and 10,000 cycles for Multi-Level Cell (“MLC”) devices. The limited number of erase cycles pose particular problems for data centers where unpredictable data streams can result in certain highly-used areas of memory being subject to a large number of erases. The third issue is data loss. Data loss can occur as a result of various factors affecting flash memory, including read disturbs or program disturbs, which lead to the loss of data bits caused by the reading or writing of memory cells adjacent to the disturbed cell. The state of a flash memory cell may also change in an unpredictable manner as the result of the passage of time.
In flash technology, flash management functions are implemented in firmware. Flash management functions include flash buffer management, defect management, and wear leveling. All of the management functions utilize some storage of a flash device for storing interim data or other information utilized by the firmware. The interim data and information utilized by the firmware that is stored in a flash page is generally referred to herein as meta data.
It would be desirable to implement a method and/or apparatus for handling meta data within a flash media controller.